///////////////////////////////////////////////////////////////////////////////
//-----------------------------------------------------------------------------
#ifndef __TEXTURE_MANAGER_H__
#define __TEXTURE_MANAGER_H__

//-----------------------------------------------------------------------------

#include <Config.h>
#include <AbstractManager.h>
#include <vector>
#include <string>

class	Texture;

//-----------------------------------------------------------------------------

class TextureManager
	: public AbstractManager<TextureManager>
{
private:
	void									ReleaseTextures();

	std::vector<Texture*>					m_textures;

	void									CreateDefaultTexture();
	Texture*								m_defaultTexture;

public:
											TextureManager();
	virtual									~TextureManager();

	void									AddTexture(Texture* tex);
	void									AddTexture(std::string filename);
	Texture*								GetTexture(std::string filename);
	Texture*								GetTextureOrCreate(std::string filename);

	//TODO - reload textures in case context is lost
	//void									ReloadTextures();

};

#endif //__TEXTURE_MANAGER_H__
//-----------------------------------------------------------------------------
///////////////////////////////////////////////////////////////////////////////
